package com.xk._04regEx;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @description: 演示 限定符 的使用
 * @author: xu
 * @date: 2022/11/1 13:45
 */
public class RegExp_05 {
    public static void main(String[] args) {
        String content = "aaa211111aaaaa111aahello1111";
        // 匹配 aaa --> a{3}
        // 匹配 1111 --> 1{4}
        // 匹配 两位的任意数字字符 --> \\d{2}
        // 匹配 aaa 或 aaaa --> a{3,4} [细节：Java匹配默认贪婪匹配，即尽可能匹配多的]
        // 匹配 1111 或 11111 --> 1{4,5}
        // 匹配任意 2个到5个 数字字符 --> \\d{2,5}
        // 匹配 一个1或者多个1 --> 1+
        // 匹配 一个或者多个数字字符 --> \\d+
        // 匹配 0个1或者多个1 --> 1* [贪婪匹配]
        // 匹配 a 或者 a1 --> a1? [贪婪匹配]
        String regStr = "a1?";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println("找到：" + matcher.group(0));
        }
    }
    /*
    * 小结：
    * '*' : 指定字符重复0次到n次 [0-n]
    * '+' : 指定字符重复1次到n次 [1-n] [至少一次]
    * '?' : 指定字符重复0次或1次 [0-1] [最多一次]
    * {n} : 只能输入n个字符  [n,n]
    * {n,} : 指定至少n个字符  [n,+oo]
    * {n,m} : 指定至少n个但不多余m个字符  [n,m]
    * */
}
